/*
叠筐
需要的时候，就把一个个大小差一圈的筐叠上去，使得从上往下看时，边筐花色交错。这个工作现在要让计算机来完成，得看你的了。
Input
输入是一个个的三元组，分别是，外筐尺寸n（n为满足0<n<80的奇整数），中心花色字符，外筐花色字符，后二者都为ASCII可见字符；
Output
输出叠在一起的筐图案，中心花色与外筐花色字符从内层起交错相叠，多筐相叠时，最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
Sample Input
11 B A
5 @ W
Sample Output
 AAAAAAAAA
ABBBBBBBBBA
ABAAAAAAABA
ABABBBBBABA
ABABAAABABA
ABABABABABA
ABABAAABABA
ABABBBBBABA
ABAAAAAAABA
ABBBBBBBBBA
 AAAAAAAAA

 @@@
@WWW@
@W@W@
@WWW@
 @@@
题意分析：
首先注意两个容易错的地方：
1. 四个角都有空格
2. 每两组输出之间有一个空行
输出的结果中，可以发现，当 (n / 2) % 2 != 0 的时候，要把两种花色进行交换，这样才能满足边筐花色交错
*/
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int n,i,j,p,q=0,l;
    char a,b,c,s[81][81];
    while (cin>>n>>a>>b)
    {
        for (i=0; i<81; i++)
            for (j=0; j<81; j++)
                s[i][j]='\0';
        l = n;
        // 控制每两组数据之间一个空行
        if (q)
            cout << endl;
        if (n == 1)
        {
            cout << a << endl;
            continue;
        }
        // 如果此时满足等于0， 则把两个花色交换
        if ((n / 2) % 2 != 0)
        {
            c = a, a = b, b = c;
        }
        for (i=0; i<n; i++)
            for (j=0; j<l; j++)
            {
                if (i==j && i%2==0)
                {
                    for (p=i; p<l; p++)
                    {
                        s[p][j]=a;
                        s[j][p]=a;
                        s[p][n-1-j]=a;
                        s[n-1-j][p]=a;
                    }
                    l--;
                }
                else if (i==j && i%2!=0)
                {
                    for (p=i; p<l; p++)
                    {
                        s[p][j]=b;
                        s[j][p]=b;
                        s[p][n-1-j]=b;
                        s[n-1-j][p]=b;
                    }
                    l--;
                }
                i++;
            }
        // 四个角的字符
        s[0][0]=' ';
        s[n-1][0]=' ';
        s[0][n-1]=' ';
        s[n-1][n-1]=' ';
        // 输出
        for (i=0; i<n; i++)
            cout<<s[i]<<endl;
        q++;
    }
}
